﻿
namespace SvCore.DbData;

public interface IDbData
{
    string DbKey();
    string Uid();
    bool Exist();
}


public static partial class DbRedis
{
    // 存档 分区
    public static void ZSave<T>(T obj) where T : IDbData
    {
        //loger.Debug($"存储对象:{obj.DbKey()}");
        ZHashSet(obj.DbKey(), obj.Uid(), obj.Jstr());
    }
    // 读档 分区
    public static bool ZLoad<T>(ref T obj) where T : IDbData, new()
    {
        var data = ZHashGet(obj.DbKey(), obj.Uid());
        if (data.IsNullOrEmpty())
        {
            return false;
        }
        try
        {
            obj = Jsh.Jobj<T>(data);
        }
        catch
        {
            return false;
        }
        return obj.Exist();
    }
    // 存档 全服
    public static void ASave<T>(T obj) where T : IDbData
    {
        AHashSet(obj.DbKey(), obj.Uid(), obj.Jstr());
    }
    // 读档 全服
    public static bool ALoad<T>(ref T obj) where T : IDbData, new()
    {
        var data = AHashGet(obj.DbKey(), obj.Uid());
        if (data.IsNullOrEmpty())
        {
            return false;
        }
        try
        {
            obj = Jsh.Jobj<T>(data);
        }
        catch
        {
            return false;
        }
        return obj.Exist();
    }
}
